Plotting graphs in C# with ZedGraph and VS 2010

I’ve moved this post to my new blog.
http://fpgentil.github.io/2012/plotting-graphs-in-c-with-zedgraph-and-vs-2010/

33 comments

  1. Hi,
    I was trying to follow your example but I kept getting the error message “There are no components in .. \zedgraph.dll that can be placed on the toolbox” when I try to add the graph control in my vs2010 toolbox. I am doing a simple wpf application and have confirmed that I am using the same zedgraph dll version as yours. Can zedgraph really work with vs2010? Any ideas on the issue that I am encountering? Your help will be much appreciated.

    Thanks and regards,
    Hazell

    1. Hello Hazell,

      That’s weird, cause I followed that tutorial a couple of weeks ago. Let’me try to help you.

      When exactly are you getting this error message?

      And Yes, I`m sure zedgraph works swell with vs2010

      Try to add zedgraph.dll into debug folder, but tell me what exactly you could do and what exactly you couldn’t do.

      I’m glad to help.

      Regards, Felipe

  2. fpgentil,

    estou tentando adaptar o seu código, a uma aplicação minha em VB. mas não consigo.
    preciso plotar um valor que recebo via porta serial no eixo x, e ir incrementando o valor em y automaticamente, de modo a formar uma onda senoinal no grafico.. (amplitude eu recebo pela serial)..

    poderia me ajudar?

  3. Estou utilizando para comunicar com o arduino… recebo um valor que vai de 0-300 pela porta serial… preciso receber esse valor no VB(essa parte está pronta). O que falta, é conseguir plotar esse valor (que varia a cada 10ms) em um gráfico… No caso, o valor recebido, seria a amplitude desse gráfico.. (forma de onda)

    1. Entendi.. bom, então os dados vc já tem, né?

      Você conseguiu usar o ZedGraph em VB? Eu nunca fiz isso, então não posso te dar ajuda me código, mas pelo que pesquisei na net, é igual em C# mesmo.

      Att.

    1. Bom, eu acho que em VB deve ser bem parecido com C#, mas tenta em C# primeiro..

      Mesmo seguindo esse tutorial você não conseguiu? Onde que deu errado?

      Att.

      1. O “listPointsOne” que você usa para pegar o valor, que no caso, você gerou usando o laço “for”, não funciona quando tento referenciar a minha variável. O valor que eu recebo vem no formato string, e fica armazenado numa textbox. Ae eu não consigo gerar a onda por que não consigo fazer ela “buscar” os dados no meu textbox.text . Já tentei mudar para double, char.. nada funciona.. Lembrando que o valor q eu recebo, vai de 0~255.

  4. Não consigo fazer o gráfico buscar o valor no Serialport1.readline.. No seu caso, você gerou uma onda randomicamente.. e é exatamente onde não consigo adaptar ao meu código.

    05 PointPairList listPointsOne = new PointPairList();
    06 PointPairList listPointsTwo = new PointPairList();

    15 for (int i = 0; i < 100; i++)
    16 {
    17 listPointsOne.Add(i, Math.Sin(i));
    18 }
    19
    20 // set lineitem to list of points
    21 myCurveOne = myPane.AddCurve(null, listPointsOne, Color.Black, SymbolType.Circle);

    1. Certo, mas onde exatamente está o erro no seu código?
      Talvez o erro em ReadLine não tem nada a ver com o plot, cola o pedaço do codigo no pastebin pra eu dar uma analisada 🙂

      Você tentou gerar uma onda random só pra ver se consegue plotar alguma coisa?

      Att.

  5. Por favor, se puder ajudar fico grato, qualquer coisa eu envio o projeto do VS2010 inteiro para você analisar/ajudar. Preciso desse projeto faz um tempo já! E acho que estou chegando perto! Obrigado.

    1. Estranho. Se você consegue gerar uma onda random e funciona, o problema está em outra parte do código.

      Você está debugando pra ver o que está chegando de dados nessa variável? Cola o método no pastebin pra eu dar uma olhada, se você não se importar 🙂

      Att.

  6. Ola boa noite
    Estou a utilizar um exemplo identico ao seu, mas não sei como chamar a delegate no código principal, ou seja, eu estou a utilizar um ZedGrap e queria passa-lo como argumento da delegate e chama-la no código principal, tem ideia de como é que posso fazer isto?

    Este é o meu código do lado da classe principal:

    static Grafico graf = new Grafico(); (aqui falta qualquer coisa)

    E a classe que tenho a delegate é esta:

    namespace CommunicateWithArduino
    {
    delegate void graph(ZedGraphControl zg);
    public class Grafico
    {

    private void graph1(ZedGraphControl zg)
    {

    if (zg.InvokeRequired)
    {
    graph ad = new graph(graph1);
    zg.Invoke(ad, new object[] { zg });
    }
    else
    {
    zg.AxisChange();
    zg.Invalidate();
    zg.Refresh();
    };
    }

    }
    }

    Obrigado 🙂

    1. Olá Gil,

      Bom, eu dei uma pesquisada e eu acredito que a maneira mais fácil de fazer isso é utilizando o método Control.Invoke
      Aqui está a documentação dele da msdn: http://msdn.microsoft.com/en-us/library/a1hetckb.aspx

      Tem um exemplo da msdn tb que também pode te ajudar aqui: http://msdn.microsoft.com/en-us/library/aa288459(v=vs.71).aspx
      Aqui tem um tutorial bem interessante de delegates: http://www.akadia.com/services/dotnet_delegates_and_events.html

      São links que eu já utilizei como estudo, se nenhum deles te ajudar, me avise.
      Boa sorte.

      Regards,
      Felipe

  7. Hi fpgentil,

    I am having very less knowledge in .net. I downloaded the Zedgraph.dll from net and added as a reference to my project. but i am not getting zedgraph control in .net framework components (step number 3) Please help me to over come this problem.

    1. Hi Silvio,

      How do you want to put your timer into a chart? What are you trying to plot?
      I havent done anything like that but I can try to help you.

      Regards,
      Felipe

  8. Felipe… Do you have an example on how to rotate an object in a graph, say, for example, I want to draw an ellipse and rotate it since it represents the error at certain points. ALso, is there anyway to animate objects traveling trough a couple of points.. Regars.. Victor…

    1. Hello Victor,

      About the rotation example, I actually dont have anyone here. But I’d say the most difficult part is taking care with the points of your elipse.

      The animation I’m afraid it cant be done using ZedGraph, I’m not 100% sure though.

      Cheers,
      Felipe

  9. I’m not particularly sure what’s happening, but my ZedGraph from your example isn’t showing up. When I download your example directly, it works perfectly, but if I try to add it to my form in my own project, the graph information does not display. It looks exactly like it does before I compile. A blank graph.

    I really appreciate your example, I just wish I could make it work. 😦

    Thanks!

    1. I got it to work! I somehow disconnected the form_load function from the actual form loading. Not sure how that happened… but all better! Your example worked great! 😀

    2. Hello Jennifer,

      Well, that’s kinda hard for me to know as I don’t have your code here. Make sure you have the proper dependencies added and try to make a clean build 🙂

      Cheers,
      Felipe

Leave a comment